class Solution {
    public:
        int hashdata[10001] = {0};
        int deleteAndEarn(vector<int>& nums) {
            int n = nums.size();
            for(int i = 0 ; i< n ; i++){
                hashdata[nums[i]] +=nums[i];
            }
            //转换为hashdata的打家劫舍问题
            vector<int> f(10001);
            vector<int> g(10001);
            f[0] = hashdata[0];
            g[0] = 0;
            for(int i = 1 ; i <10001 ;i++){
                f[i] = hashdata[i] + g[i-1];
                g[i] = max(f[i-1],g[i-1]);
            }
            return max(f[10000],g[10000]);
        }
    };